/**
* dbsvr 配置类
* @author thinkry
*/

#ifndef __DBSVR_CONFIG_H__
#define __DBSVR_CONFIG_H__

#include "dbdef.h"

class CDBConfig
{
public:
    // 共享内存
    CTSizeString<CT_PATH_MAX>	MgrShmKey;
    CTSizeString<CT_PATH_MAX>	UptShmKey;

    // 和enpsvr通讯的ShmQueue的配置
    CTSizeString<CT_PATH_MAX>	EnpFrontEndShmKey; ///< 前端共享内存的Key
    int     EnpFrontEndShmSize;   ///< 前端共享内存的大小(这里是共享内存的总大小，单向队列的大小是1/2)
    CTSizeString<CT_PATH_MAX>   EnpFrontEndSocket;    ///< 前端的UnixSocketFile
    CTSizeString<CT_PATH_MAX>   EnpBackEndSocket;     ///< 后端的UnixSocketFile

    // 和mpsvr通讯ShmQueue的配置
    CTSizeString<CT_PATH_MAX>	MpFrontEndShmKey; ///< 前端共享内存的Key
    int     MpFrontEndShmSize;   ///< 前端共享内存的大小(这里是共享内存的总大小，单向队列的大小是1/2)
    CTSizeString<CT_PATH_MAX>   MpFrontEndSocket;    ///< 前端的UnixSocketFile
    CTSizeString<CT_PATH_MAX>   MpBackEndSocket;     ///< 后端的UnixSocketFile

    CTSizeString<CT_PATH_MAX>  szDBServer; ///< dbsever名称

    //初始刷新数目
    int                m_iInitFlushNum;
    //最大刷新数目
    int                m_iMaxFlushNum;

	//初始停机刷新数目
	int                m_iInitStopFlushNum;
	//最大停机刷新数目
	int                m_iMaxStopFlushNum;

public:
    int LoadConfig();

    int ReloadConfig();

    // 读取日志配置
    int LoadLogConfig();

    //读取动态配置
    int LoadDynamicConfig();

protected:
    void Ftok(char* pszPathName, size_t iLen);
};

/** 全局配置 */
#define CONF    (CTLib::CTSingleton<CDBConfig, 0>::Instance())

#endif //__DBSVR_CONFIG_H__
